package com.bw.session.mapper;

import com.bw.session.domain.Equipment;
import com.bw.session.domain.Region;
import com.bw.session.domain.Scheduled;
import com.bw.session.domain.Session;
import com.bw.session.domain.dto.SessionDTO;
import com.bw.session.domain.po.BuildingsPO;
import com.bw.session.domain.po.RegionPO;
import com.bw.session.domain.po.ScheduledPO;
import com.bw.session.domain.po.SessionPO;
import com.bw.session.domain.vo.SessionVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SessionMapper {

    /**
     * 会议室列表
     * @param sessionName
     * @return
     */
    List<SessionPO> getAllSessions(String sessionName);

    /**
     * 查询所有会议室预定信息
     */
    List<ScheduledPO> getAllScheduled();

    /**
     * 新建会议室
     */
    void insertSession(SessionDTO sessionDTO);

    /**
     * 添加会议室设备表
     */
    void insertSessionEquipment(@Param("sessionId") Integer sessionId, @Param("equipmentIds") List<Equipment> equipmentIds);

    /**
     * 获取所有区域信息
     */
    List<BuildingsPO> selectBuildingsInfo();

    /**
     * 获取每个区域下的楼栋信息
     */
    List<RegionPO> selectRegionByBuildingsId(Long buildingsId);

    /**
     * 查询所有设备
     */
    List<Equipment> selectAllEquipment();

    /**
     * 回显会议室信息
     */
    SessionPO selectSessionById(Long id);

    /**
     * 修改会议室
     * @param sessionDTO
     */
    void updateSession(SessionDTO sessionDTO);

    /**
     * 修改会议室设备
     */
    void deleteSessionEquipment(Integer sessionId);

    List<SessionVO> selectSessionByBuildingsId(Long buildingsId);

    List<Scheduled> selectScheduledInfo(@Param("userId") Integer userId, @Param("sessionId") Long sessionId);

}
